1967A - Permutation Counting - CodeForces Solution


binary search greedy implementation math sortings *1400

Please click on ads to support us..

Python Code:

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    idx = 0
    tt = int(data[idx])
    idx += 1
    results = []
    
    for _ in range(tt):
        n = int(data[idx])
        k = int(data[idx + 1])
        idx += 2
        v = list(map(int, data[idx:idx + n]))
        idx += n
        
        v.sort()
        small = v[0]
        ind = -1
        
        for i in range(1, n):
            x = (v[i] - v[i - 1]) * i
            if x > k:
                break
            else:
                k -= x
                small = v[i]
                ind = i
        
        if ind == -1:
            results.append(str((small + k) * n))
            continue
        
        num = ind + 1
        small += k // num
        num -= k % num
        result = (n - num) * small + small + (num - 1) * (small - 1)
        results.append(str(result))
    
    sys.stdout.write("\n".join(results) + "\n")

if __name__ == "__main__":
    main()


Comments

Submit
0 Comments
More Questions

1213A - Chips Moving
490A - Team Olympiad
233A - Perfect Permutation
1360A - Minimal Square
467A - George and Accommodation
893C - Rumor
227B - Effective Approach
1534B - Histogram Ugliness
1611B - Team Composition Programmers and Mathematicians
110A - Nearly Lucky Number
1220B - Multiplication Table
1644A - Doors and Keys
1644B - Anti-Fibonacci Permutation
1610A - Anti Light's Cell Guessing
349B - Color the Fence
144A - Arrival of the General
1106A - Lunar New Year and Cross Counting
58A - Chat room
230A - Dragons
200B - Drinks
13A - Numbers
129A - Cookies
1367B - Even Array
136A - Presents
1450A - Avoid Trygub
327A - Flipping Game
411A - Password Check
1520C - Not Adjacent Matrix
1538B - Friends and Candies
580A - Kefa and First Steps